package cn.xgj.sfzy.service.impl;

import cn.xgj.sfzy.entity.*;
import cn.xgj.sfzy.mapper.ArticleTypeMapper;
import cn.xgj.sfzy.mapper.ConsultMapper;
import cn.xgj.sfzy.mapper.CourseMapper;
import cn.xgj.sfzy.mapper.CourseTypeMapper;
import cn.xgj.sfzy.service.CourseService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Collections;
import java.util.List;

/**
 * @ClassName CourseServiceImpl
 * @Description TODO
 * @Author xgj
 * @Date 2024年10月23日 下午8:08
 * @Version 1.0
 */
@Service
public class CourseServiceImpl implements CourseService {
    @Autowired
    private CourseMapper courseMapper;
//    对课程分类
    @Autowired
    private CourseTypeMapper courseTypeMapper;

    @Autowired
    private ConsultMapper consultMapper;

//    对讲师

    @Override
    public int add(Course course) {
        return courseMapper.insert(course);
    }

    @Override
    public int edit(Course course) {
        return courseMapper.update(course);
    }


    @Override
    public int remove(Integer id) {
        //  如果该对象是其他表中的关联表
        //  如果需要删除文章类型，则需要先根据文章类型来查询其下的所属文章，如果其下有文章，则提示不可删除，如果没有文章，则正常删除

        return courseMapper.delete(id);
    }

    @Override
    public List<Course> findAll(Course course) {

        return courseMapper.find(course);
    }


    @Override
    public Course findById(Integer courseId) {
        Course course = courseMapper.findById(courseId);
        if (course.getConsultId()==null){
            return course;
        }
        Long consultId = course.getConsultId();
        Consult consult = consultMapper.selectById(Math.toIntExact(consultId));
        course.setConsult(consult);

        return course;
    }


    @Override
    public PageInfo<Course> findByPage(Integer pageNum, Integer pageSize, Course course) {
        PageHelper.startPage(pageNum,pageSize);
        List<Course> list = courseMapper.find(course);
        //  遍历文章
        for(Course a:list){
            Long courseTypeId = a.getCourseTypeId();
            CourseType courseType = courseTypeMapper.findById(courseTypeId);
            a.setCourseType(courseType);
        }
        PageInfo<Course> info = new PageInfo<Course>(list);
        return info;
    }

    @Override
    public int count(Long courseTypeId) {
        return courseMapper.count(courseTypeId);
    }

}
